home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_10_04 / 1004091b < prev    next >
Text File  |  1992-02-08  |  767b  |  45 lines

  1. void push(stack *st, void *pvalue)
  2. {
  3.     if (st->stack_ptr == st->max_stack)
  4.         printf("Stack %s is full\n", st->stack_name);
  5.     else
  6.         switch (st->type) {
  7.  
  8.         case INT:
  9.             ((int *)st->pstack)[st->stack_ptr++] = *(int *)pvalue;
  10.             break;
  11.  
  12.         case LONG:
  13.             ((long *)st->pstack)[st->stack_ptr++] = *(long *)pvalue;
  14.             break;
  15.  
  16.         case DOUBLE:
  17.             ((double *)st->pstack)[st->stack_ptr++] = *(double *)pvalue;
  18.             break;
  19.         }
  20. }
  21.  
  22. void *pop(stack *st)
  23. {
  24.     if (st->stack_ptr == 0) {
  25.         printf("Stack %s is empty\n", st->stack_name);
  26.         return 0;
  27.     }
  28.  
  29.     switch (st->type) {
  30.  
  31.     case INT:
  32.         return &((int *)st->pstack)[--st->stack_ptr];
  33.         break;
  34.  
  35.     case LONG:
  36.         return &((long *)st->pstack)[--st->stack_ptr];
  37.         break;
  38.  
  39.     case DOUBLE:
  40.         return &((long *)st->pstack)[--st->stack_ptr];
  41.         break;
  42.     }
  43. }
  44.  
  45.